Skip to content

Wire the Android pull model in C++ behind the feature flag (#57579)#57579

Open
bartlomiejbloniarz wants to merge 3 commits into
mainfrom
export-D112309053
Open

Wire the Android pull model in C++ behind the feature flag (#57579)#57579
bartlomiejbloniarz wants to merge 3 commits into
mainfrom
export-D112309053

Conversation

@bartlomiejbloniarz

@bartlomiejbloniarz bartlomiejbloniarz commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Summary:

Makes enableMountingCoordinatorPullModelAndroid functional. With the flag on, the commit thread only signals transaction availability and the UI thread pulls and applies at mount time (matching iOS/macOS); with the flag off (default), behavior is byte-for-byte identical.

  • schedulerShouldRenderTransactions: notifies via JNI (FabricMountingManager::onTransactionAvailable) instead of pulling and building the batch.
  • schedulerDidFinishTransaction: no-op under the pull model.
  • FabricUIManagerBinding::pullAndExecuteTransaction (new JNI method): pulls the surface's transaction on the UI thread and runs executeMount.
  • FabricMountingManager::executeMount: gains a synchronous mode that executes the batch directly on the UI thread.
  • The accumulation sites remain gated on enableAccumulatedUpdatesInRawPropsAndroid; the pull model requires that flag to be co-enabled, since a pull may collapse several commits into one diff and therefore needs complete accumulated rawProps.

Changelog:

[Android] [Added] - Wire the pull-model mounting path in C++ behind enableMountingCoordinatorPullModelAndroid

Differential Revision: D112309053

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jul 16, 2026
@facebook-github-tools facebook-github-tools Bot added p: Software Mansion Partner: Software Mansion Partner p: Facebook Partner: Facebook labels Jul 16, 2026
@meta-codesync

meta-codesync Bot commented Jul 16, 2026

Copy link
Copy Markdown

@bartlomiejbloniarz has exported this pull request. If you are a Meta employee, you can view the originating Diff in D112309053.

Bartlomiej Bloniarz and others added 2 commits July 22, 2026 07:32
Summary:
Adds the `enableMountingCoordinatorPullModelAndroid` experiment flag (default off) that gates the Android pull-model mounting migration. Config entry plus regenerated accessors only — no behavior change.

## Changelog:
[Android] [Added] - Add `enableMountingCoordinatorPullModelAndroid` feature flag

Differential Revision: D112309049
Summary:
Java side of the pull model — dead code until the C++ wiring lands:
- `PullTransactionMountItem`: asks C++ (via `FabricUIManagerBinding.pullAndExecuteTransaction`) to pull the surface's pending transaction and apply it synchronously on the UI thread.
- `FabricUIManager.onTransactionAvailable` (JNI entry): enqueues a `PullTransactionMountItem`.
- `FabricUIManagerBinding.pullAndExecuteTransaction`: extern declaration.

One item is enqueued per notification, mirroring iOS; redundant items no-op in C++.

## Changelog:
[Android] [Added] - Add inert Java plumbing (`PullTransactionMountItem`, `FabricUIManager.onTransactionAvailable`) for the pull model

Differential Revision: D112309050
bartlomiejbloniarz pushed a commit that referenced this pull request Jul 23, 2026
Summary:
Pull Request resolved: #57579

Makes `enableMountingCoordinatorPullModelAndroid` functional. With the flag on, the commit thread only signals transaction availability and the UI thread pulls and applies at mount time (matching iOS/macOS); with the flag off (default), behavior is byte-for-byte identical.
- `schedulerShouldRenderTransactions`: notifies via JNI (`FabricMountingManager::onTransactionAvailable`) instead of pulling and building the batch.
- `schedulerDidFinishTransaction`: no-op under the pull model.
- `FabricUIManagerBinding::pullAndExecuteTransaction` (new JNI method): pulls the surface's transaction on the UI thread and runs `executeMount`.
- `FabricMountingManager::executeMount`: gains a `synchronous` mode that executes the batch directly on the UI thread.
- The accumulation sites remain gated on `enableAccumulatedUpdatesInRawPropsAndroid`; the pull model requires that flag to be co-enabled, since a pull may collapse several commits into one diff and therefore needs complete accumulated rawProps.

## Changelog:
[Android] [Added] - Wire the pull-model mounting path in C++ behind `enableMountingCoordinatorPullModelAndroid`

Differential Revision: D112309053
@meta-codesync meta-codesync Bot changed the title Wire the Android pull model in C++ behind the feature flag Wire the Android pull model in C++ behind the feature flag (#57579) Jul 23, 2026
Summary:
Pull Request resolved: #57579

Makes `enableMountingCoordinatorPullModelAndroid` functional. With the flag on, the commit thread only signals transaction availability and the UI thread pulls and applies at mount time (matching iOS/macOS); with the flag off (default), behavior is byte-for-byte identical.
- `schedulerShouldRenderTransactions`: notifies via JNI (`FabricMountingManager::onTransactionAvailable`) instead of pulling and building the batch.
- `schedulerDidFinishTransaction`: no-op under the pull model.
- `FabricUIManagerBinding::pullAndExecuteTransaction` (new JNI method): pulls the surface's transaction on the UI thread and runs `executeMount`.
- `FabricMountingManager::executeMount`: gains a `synchronous` mode that executes the batch directly on the UI thread.
- The accumulation sites remain gated on `enableAccumulatedUpdatesInRawPropsAndroid`; the pull model requires that flag to be co-enabled, since a pull may collapse several commits into one diff and therefore needs complete accumulated rawProps.

## Changelog:
[Android] [Added] - Wire the pull-model mounting path in C++ behind `enableMountingCoordinatorPullModelAndroid`

Differential Revision: D112309053
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. meta-exported p: Facebook Partner: Facebook p: Software Mansion Partner: Software Mansion Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant